﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows;
using System.Windows.Threading;


namespace Tools.Logger
{
    public static class Logger
    {
        public static void Log(DispatcherUnhandledExceptionEventArgs e)
        {

            e.Handled = true;

            string errorMessage = string.Format("V aplikaci se vyskytla chyba.\nProsím zkontrolujte zadaná data. Pokud jsou správně, akci opakujte. Jestliže se problém bude opakovat doporučujeme program vypnout a znovu zapnout, aby se nepoškodila zdrojová data.\nPokud problémy stále přetrvávají a závažně znemožnují práci s aplikací kontaktujte podporu\n\nChyba:{0}\n\nChcete pokračovat?\n(Ano budete pokračovat v práci, Ne aplikace se ukončí)",

            e.Exception.Message + (e.Exception.InnerException != null ? "\n" +
            e.Exception.InnerException.Message : null));

            string pathLogEx = @"Logs\ExceptionLog.txt";
            if (!File.Exists(pathLogEx))
            {
                Directory.CreateDirectory("Logs");
                File.Create(pathLogEx);
            }
            File.AppendAllText(pathLogEx,
                DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + Environment.NewLine +
                "\tSource" + ":\t" + e.Exception.Source + Environment.NewLine +
                "\tMessage" + ":\t\t" + e.Exception.Message + Environment.NewLine +
                "\tInnerException" + ":\t\t" + e.Exception.InnerException + Environment.NewLine +
                "\tTargetSite" + ":\t\t" + e.Exception.TargetSite + Environment.NewLine +
                Environment.NewLine);

            if (MessageBox.Show(errorMessage, "Application Error", MessageBoxButton.YesNoCancel, MessageBoxImage.Error) == MessageBoxResult.No)
            {
                if (MessageBox.Show("VAROVÁNÍ: Aplikace bude ukončena. Rozpracované části nebudou uloženy!\nOpravdu chcete zavřít aplikaci?", "Zavřít aplikaci!", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning) == MessageBoxResult.Yes)
                {
                    Application.Current.Shutdown();
                }
            }
           
        }
    }
}
